package com.chenfan.mcn.service;

import com.chenfan.common.exception.BusinessException;
import com.chenfan.mcn.exception.McnErrorCode;
import com.chenfan.mcn.model.dto.ApprovalFlowDTO;
import com.chenfan.mcn.model.dto.ChangeApprovalDTO;
import com.chenfan.process.vo.ApprovalOperationVO;
import com.chenfan.process.vo.NextNotifyVo;

/**
 * @author 2062
 */
public interface ApprovalCallbackService {

    /**
     * 审批流程
     * @param dto
     * @param billId 单据ID
     * @return
     */
    default ApprovalOperationVO changeApproval(ChangeApprovalDTO dto, Long billId) {
        throw new BusinessException(McnErrorCode.DATA_OPERATION_NOT_SUPPORTED);
    }

    /**
     * 审批流程并返回下一条
     * @param dto
     * @param billId 单据ID
     * @return
     */
    default NextNotifyVo changeApprovalNext(ChangeApprovalDTO dto, Long billId) {
        throw new BusinessException(McnErrorCode.DATA_OPERATION_NOT_SUPPORTED);
    }

    /**
     * 审批回调方法
     * @param approvalFlowDTO 流程对对象
     * @param status 最后节点的同意 false 拒绝
     */
    void approvalCallback(ApprovalFlowDTO approvalFlowDTO, Boolean status);
}
